/*
 * @Author: WangShuai 1830773767@qq.com
 * @Date: 2025-06-20 18:15:57
 * @LastEditors: WangShuai 1830773767@qq.com
 * @LastEditTime: 2025-06-25 08:53:50
 * @FilePath: \shangyitong\src\utils\request.ts
 * @Description: 这是默认设置,请设置`customMade`, 打开koroFileHeader查看配置 进行设置: https://github.com/OBKoro1/koro1FileHeader/wiki/%E9%85%8D%E7%BD%A
 */
/****
 * 对于axios 函数库进行二次封装
 * 1.利用axios 请求响应拦截器功能
 * 2.请求拦截器,可以在请求头中配置token
 * 3.响应拦截器,可以简化服务器返回的数据,处理http 网络错误 * 
 * ***********/
import axios from 'axios'
import { ElMessage } from 'element-plus'
//引入用户相关仓库
import useUserStore from'@/store/modules/user'
//利用axios.create方法创建 一个axios实例,可以设置基础路径,超时时间设置
const service = axios.create({
    baseURL: "/api",//请求基础路径
    timeout: 5000,//请求超时时间
})
//请求拦截器
service.interceptors.request.use((config) => {
    //congig:请求拦截器回调注入的对象(配置对象),配置对象身上有重要的事情header属性
    //可以通过请求头携带公共参数-token //Bearer
    let userStore = useUserStore()
    if(userStore.userInfo.token){
        config.headers.token=userStore.userInfo.token
    }
    
    return config

})
//响应拦截器
service.interceptors.response.use((response) => {
    //响应拦截器成功的回调一般进行简化数据
    return response.data
}, (error) => {

    let status = error.response.status
    switch(status){
        case 404:
            ElMessage({
                type:"error",
                message:"请求资源不存在"
            })
        break
        case 500|502|503|504|505:
        ElMessage({
            type:"error",
            message:"服务端处理错误"

        })
        break
        case 402:
        ElMessage({
            type:"error",
            message:"请求参数有误"

        })
        break
    }
    //.处理http请求网络错误
    return Promise.reject(new Error(error.message))
})
export default service